<template>
    <div>
      <div class="bg-white grid-content">
        <div style="overflow: hidden; ">
          <div class="mytitle"><svg-icon icon-class="cyjcs" class="myIcon" /> 采油井掺水和回油压力与温度数据表</div>
          <div class="myButtons">
            <el-button @click="handleClick('', 'add')" v-if="hasPermission('sys:sjtb:scgl:cyjcs:add')">新增</el-button>
          <!-- <el-button @click="uploadData">批量导入</el-button> -->
          <a :href=token><el-button icon="el-icon-download">下载模板</el-button></a>
          <el-button
            class="import-button"
            icon="el-icon-upload2"
            @click="uploadFiles"
            v-if="hasPermission('sys:sjtb:scgl:cyjcs:import')"
          >
            <i class="icon"></i>
            批量导入
          </el-button>
          <el-dialog title="批量导入" :visible.sync="importDialog" class="dialog-md" width="500px" :before-close="handleClose1">
            <el-form ref="fileForm" label-position="center" style="width: 100%" enctype="multipart/form-data">
              <el-form-item align="center" label="">
                <el-upload
                  ref="upload"
                  class="uploadDialog"
                  name="myfile"
                  action="string"
                  :http-request="httpRequest"
                  :on-change="handleChange"
                  :on-remove="handleRemove"
                  :limit="1"
                  :file-list="fileList"
                  accept=".xlsx,.xls"
                  :auto-upload="true"
                >
                  <el-button slot="trigger" size="small" type="primary">上传文件</el-button>
                  <div class="el-upload__tip" style="color: grey;">建议下载模板进行导入</div>
                  <div class="el-upload__tip">1.仅支持上传.xls、.xlsx文件</div>  
                  <div class="el-upload__tip">2.文件数据不能超过1000条</div>
                  
                </el-upload>
              </el-form-item>
            </el-form>
            <span slot="footer" class="dialog-footer">
              <el-button size="small" @click="cancelUpload()">取消</el-button>
              <el-button type="primary" size="small" @click="upload()" :disabled="uploading">确定导入</el-button>
            </span>
          </el-dialog>
        </div>
      </div>
        <!-- 表格 -->
        <el-table :data="tableData" border style="width: 100%" :header-cell-style="{background:'#F5F7FA',color:'#909399'}">
          <el-table-column fixed type="index" label="序号" :index="indexMethod">
          </el-table-column>
          <el-table-column fixed align="center" prop="rq" label="日期">
            </el-table-column>
          <el-table-column fixed align="center" prop="jzt" label="井状态">
            </el-table-column>
            <el-table-column fixed align="center" prop="jh" label="井号">
            </el-table-column>
            <el-table-column fixed align="center" prop="cyfs" label="采油方式">
            </el-table-column>
            <el-table-column align="center" prop="scsj" label="生产时间（h:min）">
            </el-table-column>
            <el-table-column align="center" prop="csyl" label="掺水压力（MPa）">
            </el-table-column>
            <el-table-column align="center" prop="cswd" label="掺水温度（oC）">
            </el-table-column>
            <el-table-column align="center" prop="hyyl" label="回油压力（MPa）">
            </el-table-column>
            <el-table-column align="center" prop="hywd" label="回油温度（oC）">
            </el-table-column>
            <el-table-column align="center" prop="bz" label="备注">
            </el-table-column>
  
          <!-- 审核页面 -->
      <el-table-column align="center" fixed="right" prop="approveStatus" label="审核状态">
          <template slot-scope="scope">
            <el-tooltip :content="scope.row.approveBz" placement="bottom" effect="light" :disabled="!scope.row.approveBz">
            <el-badge :is-dot="scope.row.approveBz!=''&&scope.row.approveBz!=null" class="item">
            <el-tag :class="scope.row.approveBz?'tagstyle':''"
            :type="
              scope.row.approveStatus == '2'
                ?'success'
                :scope.row.approveStatus == '1'
                  ? 'warning'
                  : scope.row.approveStatus == '0'
                    ? 'info'
                    : 'danger'"
              disable-transitions>{{
              scope.row.approveStatus == '2'
              ?'已通过'
              :scope.row.approveStatus == '1'
                ? '未审核'
                : scope.row.approveStatus == '0'
                  ? '未提交'
                  : '未通过'
            }}</el-tag>
            </el-badge>
          </el-tooltip>
          </template>
        </el-table-column>

        <el-table-column align="center" fixed="right" label="操作" width="150" v-if="hasPermission('sys:sjtb:scgl:cyjcs:edit') || hasPermission('sys:sjtb:scgl:cyjcs:check') || hasPermission('sys:sjtb:scgl:cyjcs:delete')">
          <template slot-scope="scope">
            <el-button @click="handleClick(scope.row, 'check')" type="text" style="color: #2ec02e" v-if="hasPermission('sys:sjtb:scgl:cyjcs:check')">查看</el-button>
            <el-button @click="handleClick(scope.row, 'edit')" type="text" v-if="hasPermission('sys:sjtb:scgl:cyjcs:edit')">编辑</el-button>
            <el-button @click="handleDelete(scope.row)" type="text" style="color: red"
              v-if="hasPermission('sys:sjtb:scgl:cyjcs:delete')">删除 </el-button>
          </template>
        </el-table-column>
      </el-table>
        <!-- 分页器 -->
        <el-pagination align='right'
            background
            @size-change="handleSizeChange" 
            @current-change="handleCurrentChange" 
            :current-page="pageNo"
            :page-sizes="[5,10, 20, 30, 40, 50]" 
            :page-size="pageSize" 
            layout="total, sizes, prev, pager, next, jumper"
            :total="total">
          </el-pagination>
      </div>
  
      <!-- 弹出框 -->
      <el-dialog :title="myDialogTitle" :visible.sync="dialogFormVisible" :before-close="handleClose" custom-class="saveAsDialog">
  
        <el-form :inline="true" :model="CyjcsForm" class="demo-form-inline" :rules="rules" ref="CyjcsForm" :disabled="isInput" label-position="left" label-width="180px" >
          <!-- <el-divider content-position="left">基础信息</el-divider> -->
          <el-row>
              <!-- <el-col :span="12">
                <el-form-item label="日期:">
                  <el-date-picker v-model="CyjcsForm.rq" align="right" type="date" placeholder="请选择日期"
                    :picker-options="pickerOptions">
                  </el-date-picker>
                </el-form-item>
              </el-col> -->
              <el-col :span="12">
                <el-form-item label-position="left" label-width="180px"  label="井状态:" prop="jzt">
                  <el-input v-model="CyjcsForm.jzt" placeholder="请输入井状态"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label-position="left" label-width="180px"  label="井号:" prop="jh">
                  <el-input v-model="CyjcsForm.jh" placeholder="请输入井号"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="采油方式:">
                  <el-input v-model="CyjcsForm.cyfs" placeholder="请输入采油方式"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="生产时间（h:min）:">
                  <el-input v-model="CyjcsForm.scsj" placeholder="请输入生产时间（h:min）"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="掺水压力（MPa）:">
                  <el-input v-model="CyjcsForm.csyl" placeholder="请输入掺水压力（MPa）"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="掺水温度（oC）:">
                  <el-input v-model="CyjcsForm.cswd" placeholder="请输入掺水温度（oC）"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="回油压力（MPa）:">
                  <el-input v-model="CyjcsForm.hyyl" placeholder="请输入回油压力（MPa）"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="回油温度（oC）:">
                  <el-input v-model="CyjcsForm.hywd" placeholder="请输入回油温度（oC）"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="备注:">
                  <el-input v-model="CyjcsForm.bz" placeholder="请输入备注"></el-input>
                </el-form-item>
              </el-col>
            </el-row>
        </el-form>
  
        <div slot="footer" class="dialog-footer" v-show="!ischeck">
        <el-button @click="close('CyjcsForm')">取 消</el-button>
        <el-button type="primary" @click="submitForm('CyjcsForm')">确 定</el-button>
      </div>
      <div slot="footer" class="dialog-footer" v-show="ischeckSh">
        <el-button type="primary" @click="submitSh('CyjcsForm')">提交审核</el-button>
      </div>
      </el-dialog>
    </div>
  </template>
  
  <script>
  import axios from "axios";
  import cyjcsApi from '@/api/sjtb/scgl/cshyylywdsjbcx';
  import { getToken } from "@/utils/auth";
  
  export default {
    data() {
      return {
        pageNo: 1, //当前页码
        pageSize: 10, //每页显示数量
        total: 0, //总数量
        // table数据
        tableData: [],
        //当前页码
        currentPage: 1,
        //表单填报的数据
        CyjcsForm: {
          id:'',
          jzt:'',//井状态
          jh:'',//井号
          cyfs: '',//采油方式
          scsj: '',//生产时间（h:min）
          csyl: '',//掺水压力（MPa）
          cswd: '',//掺水温度（oC）
          hyyl: '',//回油压力（MPa）
          hywd: '',//回油温度（oC）
          bz: '',//备注
  
        },
        //验证规则
        rules: {
          jzt: [
            { required: true, message: '请输入井状态', trigger: 'blur' },
          ],
          jh: [
            { required: true, message: '请输入井号', trigger: 'blur' }
          ],
          // tcrq: [
          //   { required: true, message: '请选择日期', trigger: 'change' }
          // ],
        },
        //时间快捷选择
        pickerOptions: {
          disabledDate(time) {
            return time.getTime() > Date.now();
          },
          shortcuts: [{
            text: '今天',
            onClick(picker) {
              picker.$emit('pick', new Date());
            }
          }, {
            text: '昨天',
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24);
              picker.$emit('pick', date);
            }
          }, {
            text: '一周前',
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
              picker.$emit('pick', date);
            }
          }]
        },
        //获取当前日期
        currentTime:'',
        //编辑框是否显示
        dialogFormVisible: false,
        //弹出框是否是查看
        ischeck: false,
        //弹出框是否有提交审核按钮
        ischeckSh: false,
        //控制查看时不可更改数据
        isInput:false,
        //弹出框标题
        myDialogTitle: '',

        file: null,
        //加载动画
        uploadLoading: false,
        //上传的文件列表
        fileList: [],
        //控制弹出框显示与否
        uploadShowDialog: false,
        //上传地址
        uploadURL: '',
        //loading加载中
        downloadLoading: '',
        importDialog:false,
        fileList:[],
        urlFile:'',
        uploading:true,
        token:'',
      }
    },
    created(){
      this.search();
    },
    mounted(){
      this.filterTime();
      // this.initDate();
      this.token="http://47.108.251.250:3296/api/cyjcshhyylywds/downLoadExcel?token="+getToken();
    },
    methods: {
      /**
      * 查询列表
      */
      async search() {
        // this.pageNo = pageNo; //当前页码
        // this.pageSize = pageSize; //每页显示数量
        //发送查询请求
        let res = await cyjcsApi.getCyjcsList(this.pageNo,this.pageSize);
        //判断是否成功
        if(res.success){
          console.log(res.data);
          //赋值
          this.tableData = res.data.records;
          //总数量
          this.total = res.data.total;
        }
      },
      onSubmit() {
        console.log('submit!');
      },
      //关闭对话框
      handleClose(done) {      
        // 清空表单
        // this.$refs['CyjcsForm'].resetFields();
        // 清空表单校验，避免再次进来会出现上次校验的记录
        this.$refs['CyjcsForm'].clearValidate()
        done()
        
      },
      handleClose1(done) {  
      this.urlFile = ''  
      this.fileList =[];  
      done()     
      },
        // 弹框关闭触发
      close(formName) {
        this.dialogFormVisible = false;
        // 清空表单
        // this.$refs[formName].resetFields();
        // 清空表单校验，避免再次进来会出现上次校验的记录
        this.$refs[formName].clearValidate()
      },
  
      submitForm(formName) {
        //表单验证
        this.$refs[formName].validate(async (valid) => {
            if (valid) {
                let res = null;
                console.log(this.CyjcsForm.id+"111")
                //判断菜单ID是否为空
                if (this.CyjcsForm.id === '') {
                  this.CyjcsForm.rq = this.currentTime;
                    //发送添加请求
                    res = await cyjcsApi.addCyjcs(this.CyjcsForm);
                } else {
                    //发送修改请求
                    this.CyjcsForm.approveStatus = 0;
                    // console.log(334345)
                    res = await cyjcsApi.updateCyjcs(this.CyjcsForm);
                }
                console.log(res)
                //判断是否成功
                if (res.success) {
                    this.$message.success(res.message);
                    //刷新
                    this.search();
                    //关闭窗口
                    this.dialogFormVisible = false;
                } else {
                  console.log(res)
                    this.$message.error(res.message);
                }
            }
        })
      },
      //提交审核
      async submitSh(formName) {

        let res = null;
        //发送修改请求
        this.CyjcsForm.approveStatus = 1;
        this.CyjcsForm.approveBz = '';
        // console.log(334345)
        res = await cyjcsApi.updateCyjcs(this.CyjcsForm);

        console.log(res)
        //判断是否成功
        if (res.success) {
            this.$message.success(res.message);
            //刷新
            this.search();
            //关闭窗口
            this.dialogFormVisible = false;
        } else {
          console.log(res)
            this.$message.error(res.message);
        }

      },
      handleClick(row, handle) {
        // console.log(row.approveStatus);
        this.dialogFormVisible = true;
        if (handle == 'check') {
          this.myDialogTitle = '采油井掺水和回油压力与温度数据表'
          if(row.approveStatus==0){
          this.ischeckSh = true
          }else{
            this.ischeckSh = false
          } 
          this.ischeck = true
          this.isInput = true;// 1.表单禁用
          // this.CyjcsForm = row
          this.$objCopy(row, this.CyjcsForm);//把当前要编辑的数据复制到数据域，给表单回显
          this.$message({ message: '成功打开', type: 'success' });
        } else if (handle == 'edit') {
            if(row.approveStatus!=1){
              this.myDialogTitle = '采油井掺水和回油压力与温度数据表编辑'
              this.ischeck = false
              this.ischeckSh = false  
              this.isInput = false     
              this.$objCopy(row, this.CyjcsForm);//把当前要编辑的数据复制到数据域，给表单回显
            }else {
              this.dialogFormVisible = false;
              this.$message({ message: '已通过不可修改！', type: 'error' });
            }
        } else if (handle == 'add') {
          // this.CyjcsForm ={}
          this.$resetForm("CyjcsForm", this.CyjcsForm); //清空表单数据
          this.myDialogTitle = '采油井掺水和回油压力与温度数据表填报'
          this.ischeck = false
          this.ischeckSh = false
          this.isInput = false
        }
        // console.log(row);
      },
      uploadFiles() {
      this.importDialog = true
      this.urlFile = ''
    },
    cancelUpload(){
      this.urlFile = ''
      this.fileList = [];
      this.importDialog = false
    },
    //  监听改变
    handleChange(file, fileList) {
      this.fileList = fileList
    },
    // 移除
    handleRemove(file, fileList) {
      this.fileList = fileList
    },
    beforeAvatarUpload(file) {
      //1MB=1024*1024(1MB=1024KB 1KB=1024MB)
      const is10M = file.size / 1024 / 1024 < 10;
       //限制文件上传大小
      if (!is10M) {
        this.$message.error("上传图片大小不能超过 10MB!");
        return false
      }
      return true
    },
    // 自定义上传Excel方法
    httpRequest(param) {
      // console.log(param.file);
      this.uploading = true;
      const File = this.fileList[0].raw;
      // const File = param.file
      console.log(File);
      // console.log(this.fileList);
      let formData = new FormData();
      formData.append("myfile", File);
      console.log(formData.get("myfile"));

      axios({
      url: "http://47.108.251.250:3296/api/fileAbout/fileUpload",
      method: "post",
      headers: {
        "token": getToken(),
        "Content-Type": "multipart/form-data",
      },
      data: formData,
        }).then(
          (response) => {
            if (response.data.success === true && response.data.data!=="") {
              console.log(response.data);
              this.urlFile = response.data.data;
              console.log(this.urlFile);
              this.$message.success(response.data.message);
              param.onSuccess();
              this.uploading = false;
            }else{
              this.$message.error('上传失败');
            }    
          },
          (error) => {
            console.log(error);
            this.$message.error(response.data.message);
          }
        );
    }, 
    //文件导入
    upload(){
      let formData = new FormData();
      formData.append("filePath",this.urlFile);
      console.log(formData.get("filePath"));
      axios({
      url: "http://47.108.251.250:3296/api/cyjcshhyylywds/batchInput",
      method: "post",
      headers: {
        "token": getToken(),
        "Content-Type": "multipart/form-data",
      },
      data: formData,
        }).then(
          (response) => {
            if (response.data.success === true) {
              console.log(response.data);
              this.$message.success(response.data.message);
              //刷新
              this.search();
              //关闭窗口
              this.importDialog = false;
              this.fileList = []; 
            }else{
              this.$message.error('导入失败');
            }    
          },
          (error) => {
            console.log(error);
            this.$message.error(response.data.message);
          }
        );
    },
    //下载模板
    downloadExcel(){
      window.open("http://47.108.251.250:3296/api/cyjcshhyylywds/downLoadExcel?token="+getToken());
      // res = CyjcsApi.updateSyj(this.CyjcsForm);
      // axios({
      // url: "http://47.108.251.250:3296/api/Cyjcs/downLoadExcel",
      // method: "get",
      // headers: {
      //   "token": getToken(),
      //   "Content-Type": "application/vnd.ms-excel",
      // },
      // // data: formData,
      //   }).then(
      //     (response) => {
      //         console.log(response);  
      //     },
      //     (error) => {
      //       console.log(error);
      //       // this.$message.error(response.data.message);
      //     }
      //   );
    
      // console.log(res)
      // //判断是否成功
      // if (res.success) {
      //     this.$message.success(res.message);
      //     //刷新
      //     this.search();
      //     //关闭窗口
      //     this.dialogFormVisible = false;
      // } else {
      //   console.log(res)
      //     this.$message.error(res.message);
      // }
    },
    async handleDelete(row) {

//判断是否可以删除
if (row.approveStatus == 2) {
  //提示不能删除
  this.$message({ message: '已通过不可删除！', type: 'error' });
} else {
  //确认是否删除
  let confirm = await this.$myconfirm("确定要删除该数据吗?");
  console.log(confirm)
  if (confirm) {
    //发送删除请求
    console.log('111')
    let res = await cyjcsApi.delete({ id: row.id });
    console.log(res)
    //判断是否成功
    if (res.success) {
      //成功提示
      this.$message.success(res.message);
      //刷新
      this.search();
    } else {
      //失败提示
      this.$message.error(res.message);
    }
  }
}
},
    


      // uploadData() {
      //   console.log('批量导入成功')
      // },
      // //每页条数改变时触发 选择一页显示多少行
      // handleSizeChange(val) {
      //   console.log(`每页 ${val} 条`);
      //   this.currentPage = 1;
      //   this.pageSize = val;
      // },
      // //当前页改变时触发 跳转其他页
      // handleCurrentChange(val) {
      //   console.log(`当前页: ${val}`);
      //   this.currentPage = val;
      // },
      /*** 当每页数量发生变化时触发该事件 */
      handleSizeChange(size) {
        console.log(size);
        this.pageSize = size;
        //将每页显示的数量交给成员变量
        this.search(this.pageNo, size);
      },
      /*** 当页码发生变化时触发该事件 */
      handleCurrentChange(page) {
        console.log(page);
        this.pageNo = page;
        //调用查询方法
        this.search(page, this.pageSize);
      },
      // 序号计算
      indexMethod (index) {
      // index默认在0开始，这里+1
        return index + 1 + (this.pageNo - 1) * this.pageSize
      },
      // 获取当前日期
      filterTime() {
        var date = new Date();
        var y = date.getFullYear();
        var m = date.getMonth() + 1;
        m = m < 10 ? '0' + m : m;
        var d = date.getDate();
        d = d < 10 ? '0' + d : d;
        this.currentTime = y + '-' + m + '-' + d;
      },
    }
  }
  </script>
  
  <style lang="scss" scoped>
  // 标题
  .mytitle {
    font-size: large;
    padding-left: 10px;
    margin-bottom: 16px;
    float: left;
  }
  
  //按钮组
  .myButtons {
    float: right
  }
  
  //格子的样式
  .bg-white {
    background: #ffffff;
  }
  
  .grid-content {
    padding: 10px;
    margin-bottom: 10px;
    border-radius: 4px;
  }
  
  .calendar ::v-deep .el-button-group::before {
    display: none;
  }
  
  .calendar ::v-deep .el-button-group::after {
    display: none;
  }
  
  // 分割线样式
  .el-divider--horizontal {
    display: block;
    height: 2px;
    width: 100%;
    margin: 24px 0;
  }
  
  // 表单各项的样式
  .el-form-item {
    margin: 15px 10px 15px 10px;
  }
  
  //表单禁用字体样式
  .el-input.is-disabled ::v-deep .el-input__inner {
      color: #606266;
    }
  //对话框宽度
  // .customWidth{
  //         width:80%;
  //     }
  ::v-deep .saveAsDialog {
    width: 60% !important;
  }
  </style>